package com.gl.glbooks.quartz;

import java.util.Calendar;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.scheduling.quartz.QuartzJobBean;

import com.gl.glbooks.services.ILibroServices;
import com.gl.glbooks.services.IListarServices;
import com.gl.glbooks.services.IMailServices;
import com.gl.glbooks.services.LibroServices;
import com.gl.glbooks.services.ListarServices;
import com.gl.glbooks.services.MailServices;
import com.gl.glbooks.vos.Prestamo;
import com.gl.glbooks.vos.Usuario;

public class RunMeJob extends QuartzJobBean {
	@Autowired
	private IMailServices mailServices;
	
	@Autowired
	private IListarServices listarServices;

	public IListarServices getListarServices() {
		return listarServices;
	}

	public void setListarServices(IListarServices listarServices) {
		this.listarServices = listarServices;
	}

	public void setMailServices(IMailServices mailServices) {
		this.mailServices = mailServices;
	}
	
	public void getUsuariosPrestamosVencidos (){
		Calendar fechaDevolucion=Calendar.getInstance();
		for(Prestamo prestamo: listarServices.listarPrestamosPorFechaMenor(fechaDevolucion.getTime())){
			mailServices.prestamoVencido(prestamo.getUsuario());
		}
	}
	
	public void getUsuariosPrestamos(){
		Calendar fechaDevolucion=Calendar.getInstance();
		fechaDevolucion.add(Calendar.DATE,1);
		for(Prestamo prestamo: listarServices.listarPrestamosPorFecha(fechaDevolucion.getTime())){
			mailServices.prestamoPorVencer(prestamo.getUsuario());
		}
	}
	
	protected void executeInternal(JobExecutionContext context)throws JobExecutionException {

		getUsuariosPrestamosVencidos();
		getUsuariosPrestamos();
	}

}